home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / STDLIB.PAK / GENERATE.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  1KB  |  61 lines

  1.  #include <algorithm>
  2.  #include <vector>    
  3.  
  4.  using namespace std;
  5.  
  6.  //
  7.  // Value generator simply doubles the current value and returns it.
  8.  //
  9.  template <class T>
  10.  class generate_val
  11.  {
  12.    private:
  13.       T val_;
  14.    public:
  15.       generate_val(const T& val) : val_(val) {}
  16.       T& operator()() { val_ += val_; return val_; }
  17.  };
  18.  
  19.  int main ()
  20.  {
  21.    int d1[4] = {1,2,3,4};
  22.    generate_val<int> gen(1);
  23.    //
  24.    // Set up two vectors.
  25.    //
  26.    vector<int> v1(d1+0, d1+4), v2(d1+0, d1+4);
  27.    //
  28.    // Set up one empty vector.
  29.    //
  30.    vector<int> v3;
  31.    //
  32.    // Generate values for all of v1.
  33.    //
  34.    generate(v1.begin(), v1.end(), gen);
  35.    //
  36.    // Generate values for first 3 of v2.
  37.    //
  38.    generate_n(v2.begin(), 3, gen);
  39.    //
  40.    // Use insert iterator to generate 5 values for v3.
  41.    //
  42.    generate_n(back_inserter(v3), 5, gen);
  43.    //
  44.    // Copy all three to cout.
  45.    //
  46.    ostream_iterator<int> out(cout," ");
  47.    copy(v1.begin(), v1.end(), out);
  48.    cout << endl;
  49.    copy(v2.begin(), v2.end(), out);
  50.    cout << endl;
  51.    copy(v3.begin(), v3.end(), out);
  52.    cout << endl;
  53.    //
  54.    // Generate 3 values for cout.
  55.    //
  56.    generate_n(ostream_iterator<int>(cout," "), 3, gen);
  57.    cout << endl;
  58.  
  59.    return 0;
  60.  }
  61.